package pl.com.sjap.agenci;

import CLIPSJNI.Environment;
import CLIPSJNI.MultifieldValue;

public class TaxiDriver {

	private Double cena_za_km, cena_startowa, ilosc_km, spalanie_na_100,
			poziom_baku, ile_km, cena, stan_kasy;
	private String marka, stan_techniczny, akcja_kierowcy, czy_uprzejmy,
			czy_doswiadczony;




	public Double getStan_kasy() {
		return stan_kasy;
	}

	public void setStan_kasy(Double stan_kasy) {
		this.stan_kasy = stan_kasy;
	}

	public String getAboutDriver(Environment clipse) {
		MultifieldValue bohatercl = (MultifieldValue) clipse
				.eval("(find-all-facts ((?f driver)) TRUE)");
		try {
			this.setCzy_uprzejmy(bohatercl.get(0).getFactSlot("czy_uprzejmy")
					.toString());
			this.setCzy_doswiadczony(bohatercl.get(0)
					.getFactSlot("doswiadczenie").toString());
			

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "TaxiDriver [czy_uprzejmy=" + czy_uprzejmy
				+ ", czy_doswiadczony=" + czy_doswiadczony + "]";

	}
	public String addAuto()
	{
		return "(auto (marka "+this.getMarka()+")(spalanie_na_100 "+this.spalanie_na_100+")(stan_techniczny "+this.stan_techniczny+")(poziom_baku "+this.poziom_baku+"))";
	}
	public String addDriver()
	{
		return "(driver (czy_uprzejmy "+this.czy_uprzejmy+")(doswiadczenie "+this.czy_doswiadczony+"))";
		
		
	}
	public TaxiDriver(Double cena_za_km, Double cena_startowa, Double ilosc_km,
			Double spalanie_na_100, Double poziom_baku, Double ile_km,
			Double cena, Double stan_kasy, String marka,
			String stan_techniczny, String akcja_kierowcy, String czy_uprzejmy,
			String czy_doswiadczony) {
		super();
		this.cena_za_km = cena_za_km;
		this.cena_startowa = cena_startowa;
		this.ilosc_km = ilosc_km;
		this.spalanie_na_100 = spalanie_na_100;
		this.poziom_baku = poziom_baku;
		this.ile_km = ile_km;
		this.cena = cena;
		this.stan_kasy = stan_kasy;
		this.marka = marka;
		this.stan_techniczny = stan_techniczny;
		this.akcja_kierowcy = akcja_kierowcy;
		this.czy_uprzejmy = czy_uprzejmy;
		this.czy_doswiadczony = czy_doswiadczony;
//		clipse.assertString(this.addAuto());
//		clipse.assertString(this.addDriver());
//		clipse.assertString(this.addStatystyki());
	}

	public String addStatystyki()
	{

		return "(statystyki_taxi_driver (cena_za_km "+this.cena_za_km+")(cena_startowa "+this.cena_startowa+")(ilosc_km "+this.ilosc_km+")(stan_kasy "+this.stan_kasy+"))";
		
	}
	public String addAkcja()
	{
		return "(akcja_kierowcy (typ_akcji "+this.akcja_kierowcy+"))";
		
	}
	public String addKosztPrzejazdu(){
//		(slot ile_km(type FLOAT))
//		(slot cena(type FLOAT))
		return "(koszt_przejazdu (ile_km "+this.ile_km+")(cena "+this.cena+"))";
	}
	
	

	public String getAboutStatystyki(Environment clipse) {
		MultifieldValue bohatercl = (MultifieldValue) clipse
				.eval("(find-all-facts ((?f statystyki_taxi_driver)) TRUE)");
		try {
			//if(bohatercl.size()!=0){
			this.setCena_za_km(Double.valueOf(bohatercl.get(0)
					.getFactSlot("cena_za_km").toString()));
			this.setCena_startowa(Double.valueOf(bohatercl.get(0)
					.getFactSlot("cena_startowa").toString()));
			this.setIlosc_km(Double.valueOf(bohatercl.get(0)
					.getFactSlot("ilosc_km").toString()));
			this.setStan_kasy(Double.valueOf(bohatercl.get(0)
					.getFactSlot("stan_kasy").toString()));
			//}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "TaxiDriver [cena_za_km=" + cena_za_km + ", cena_startowa="
				+ cena_startowa + ", ilosc_km=" + ilosc_km + "stan_kasy "+this.stan_kasy+"]";
	}

	public String getAboutAuto(Environment clipse) {
		MultifieldValue bohatercl = (MultifieldValue) clipse
				.eval("(find-all-facts ((?f auto)) TRUE)");
		try {
			this.setMarka(bohatercl.get(0).getFactSlot("marka").toString());
			this.setSpalanie_na_100(Double.valueOf(bohatercl.get(0)
					.getFactSlot("spalanie_na_100").toString()));
			this.setStan_techniczny(bohatercl.get(0)
					.getFactSlot("stan_techniczny").toString());
			this.setPoziom_baku(Double.valueOf(bohatercl.get(0)
					.getFactSlot("poziom_baku").toString()));

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "TaxiDriver [spalanie_na_100=" + spalanie_na_100
				+ ", poziom_baku=" + poziom_baku + ", marka=" + marka
				+ ", stan_techniczny=" + stan_techniczny + "]";

	}

	public String getAboutKoszt(Environment clipse) {
		MultifieldValue bohatercl = (MultifieldValue) clipse
				.eval("(find-all-facts ((?f koszt_przejazdu)) TRUE)");
		try {
			this.setCena_startowa(Double.valueOf(bohatercl.get(0)
					.getFactSlot("cena").toString()));
			this.setIle_km(Double.valueOf(bohatercl.get(0)
					.getFactSlot("ile_km").toString()));

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "TaxiDriver [ile_km=" + ile_km + ", cena=" + cena + "]";

	}

	public String getAboutAkcja(Environment clipse) {
		MultifieldValue bohatercl = (MultifieldValue) clipse
				.eval("(find-all-facts ((?f akcja_kierowcy)) TRUE)");
		try {
			this.setAkcja_kierowcy(bohatercl.get(0).getFactSlot("typ_akcji")
					.toString());

		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return "TaxiDriver [akcja_kierowcy=" + akcja_kierowcy + "]";
	}

	public Double getCena_za_km() {
		return cena_za_km;
	}

	public void setCena_za_km(Double cena_za_km) {
		this.cena_za_km = cena_za_km;
	}

	public Double getCena_startowa() {
		return cena_startowa;
	}

	public String getCzy_uprzejmy() {
		return czy_uprzejmy;
	}

	public void setCzy_uprzejmy(String czy_uprzejmy) {
		this.czy_uprzejmy = czy_uprzejmy;
	}

	public String getCzy_doswiadczony() {
		return czy_doswiadczony;
	}

	public void setCzy_doswiadczony(String czy_doswiadczony) {
		this.czy_doswiadczony = czy_doswiadczony;
	}

	public void setCena_startowa(Double cena_startowa) {
		this.cena_startowa = cena_startowa;
	}

	public Double getIlosc_km() {
		return ilosc_km;
	}

	public void setIlosc_km(Double ilosc_km) {
		this.ilosc_km = ilosc_km;
	}

	public Double getSpalanie_na_100() {
		return spalanie_na_100;
	}

	public void setSpalanie_na_100(Double spalanie_na_100) {
		this.spalanie_na_100 = spalanie_na_100;
	}

	public Double getPoziom_baku() {
		return poziom_baku;
	}

	public void setPoziom_baku(Double poziom_baku) {
		this.poziom_baku = poziom_baku;
	}

	public Double getIle_km() {
		return ile_km;
	}

	public void setIle_km(Double ile_km) {
		this.ile_km = ile_km;
	}

	public Double getCena() {
		return cena;
	}

	public void setCena(Double cena) {
		this.cena = cena;
	}

	public String getMarka() {
		return marka;
	}

	public void setMarka(String marka) {
		this.marka = marka;
	}

	public String getStan_techniczny() {
		return stan_techniczny;
	}

	public void setStan_techniczny(String stan_techniczny) {
		this.stan_techniczny = stan_techniczny;
	}

	public String getAkcja_kierowcy() {
		return akcja_kierowcy;
	}

	public void setAkcja_kierowcy(String akcja_kierowcy) {
		this.akcja_kierowcy = akcja_kierowcy;
	}

}
